package com.sz.common.core.system.service;

import com.sz.common.base.dao.ParamData;
import com.sz.common.core.service.role.RoleMembership;
import com.sz.common.core.system.entity.Role;

import java.util.List;

/**
 * Function: RoleService <br>
 * Author: penghui.zheng <br>
 * Date: 2016-10-27 10:44:26
 */
public interface RoleService {
    /**
     * 新增角色
     *
     * @param role
     * @return @
     */
    int saveRole(Role role);

    /**
     * 根据角色Id删除角色
     *
     * @param roleId
     * @
     */
    void deleteRoleById(int roleId);

    /**
     * 修改角色
     *
     * @param role
     * @return @
     */
    int updateRole(Role role);

    /**
     * 根据角色Id查询角色
     *
     * @param roleId
     * @return @
     */
    Role findByRoleId(int roleId);

    /**
     * 拖动角色
     *
     * @param orgid       源
     * @param targetPreId 目的地 @
     */
    void dragRole(int roleId, int targetPreId, int domainId);

    /**
     * 分页查询角色
     *
     * @param q
     * @param pageIndex
     * @param pageSize
     * @param domainId
     * @return
     */
    List<ParamData> roleListPage(String q, int pageIndex, int pageSize, int domainId);

    /**
     * 组织分配成员
     *
     * @param roleid
     * @param memberships
     * @return
     */
    void assignRoleMembers(int roleid, List<RoleMembership> memberships);

    /**
     * 组织删除成员
     *
     * @param roleid
     * @param memberships
     * @return
     */
    void removeRoleMembers(int roleid, List<RoleMembership> memberships);

    /**
     * @param domainId
     * @return @
     */
    Role getRoleCode(int domainId);

    /**
     * @param name
     * @return @
     */
    void checkRoleName(String name, int id, String domainId);

    /**
     * @param code
     * @return @
     */
    void checkRoleCode(String code, int id, String domainId);

    /**
     * 通过成员获取角色
     *
     * @param roleMembership
     * @return
     */
    List<Role> getRoleByMember(RoleMembership roleMembership);

}
